﻿/**********************************************************************
 * @file   FITKSEASubSysModelProp.h
 * @brief  子系统模型属性计算
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2024-11-13
 *********************************************************************/
#ifndef _FITK_SEASUB_SYS_MODELPROP_H___
#define _FITK_SEASUB_SYS_MODELPROP_H___
 
#include "FITKAcousticsModelAPI.h"
#include <QList>
#include <QPair>
#include <QHash>

namespace Core
{
    class FITKNode;
}

namespace Acoustics
{
    class FITKAbstractSEAFace;
    /**
     * @brief  子系统模型属性
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date   2024-11-13
     */
    class FITKAcousticsModelAPI FITKSEASubSysModelProp
    {
    public:
        /**
         * @brief Construct a new FITKSEASubSysModelProp object
         * @param[i]  faceData        face对象
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-13
         */
        explicit FITKSEASubSysModelProp(FITKAbstractSEAFace* faceData);
        /**
         * @brief Destroy the FITKSEASubSysModelProp object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-13
         */
        virtual ~FITKSEASubSysModelProp() = default;
        /**
         * @brief    更新模型数据
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-19
         */
        bool updateModelProp();
        /**
         * @brief    获取边界节点id对
         * @return   QList<QPair<int,int>>
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-13
         */
        QList<QPair<int, int>> getBoundary();

    protected:
        /**
         * @brief    计算边界边
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-13
         */
        void calculateBoundaryEdge();

    protected:
        /**
         * @brief face数据
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-11-05
         */
        FITKAbstractSEAFace* _faceData{};
        /**
         * @brief  边界节点对
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-13
         */
        QList<QPair<int, int>> _boundaryNodes{};
    };
}


#endif
